home *** CD-ROM | disk | FTP | other *** search
/ Windows 6-Pak - Disc 4 / Windows 6-Pak (InfoMagic) (Disc 4) (1999).ISO / Text-Chat-Scripts / pp-320m.exe / pp300 / a-main2.mrc < prev    next >
Encoding:
Text File  |  1997-12-15  |  25.4 KB  |  518 lines

  1. ; -----------------------------------------------------
  2. ; Peace and Protection (by misspai)
  3. ; -----------------------------------------------------
  4. ; Main (normal) aliases
  5. ; (Second section)
  6. ; -----------------------------------------------------
  7. ; Automatic events
  8. ; -----------------------------------------------------
  9. ; auto xwfoj*nc/apdveu/[q] [#channel] [cmd/pw]
  10. ; -----------------------------------------------------
  11. auto {
  12.   unset %.au.cmd %.au.act
  13.   set %.au.q $false
  14.   if ($1 == $null) _quickhelp /auto
  15.   if (x isin $1) set %.au.cmd X | if (w isin $1) set %.au.cmd W | if (n isin $1) set %.au.cmd n | if (c isin $1) set %.au.cmd c | if (* isin $1) set %.au.cmd * | if (q isin $1) set %.au.q $true
  16.   if (f isin $1) { set %.au.cmd f | set %.au.when (activated when you join) } | if (o isin $1) { set %.au.cmd o | set %.au.when (activated when you're opped) } | if (j isin $1) { set %.au.cmd j | set %.au.when (activated when others join) }
  17.   if (a isin $1) set %.au.act a | if (p isin $1) set %.au.act p | if (d isin $1) set %.au.act d | if (v isin $1) set %.au.act v | if (e isin $1) set %.au.act e | if (u isin $1) set %.au.act u
  18.   if ((%.au.cmd == $null) || (%.au.act == $null)) _quickhelp /auto
  19.   if (%.au.cmd == *) {
  20.     if (%.au.act == p) { if (%.au.q) return | _error You cannot perform multiple sets of autoevents. }
  21.     if (%.au.act == a) { if (%.au.q) return | _error You cannot add an autoevent to multiple types. }
  22.     if (%.au.act == u) { if (%.au.q) return | _error Only on-join autoevents have an associated userlevel. }
  23.     _allauto %.au.act $2- | return
  24.   }
  25.   if (($_ischan($2)) || (%.au.cmd == n)) { set %.au.parms $3- | set %.au.chan $2 }
  26.   else { set %.au.parms $2- | set %.au.chan all }
  27.   set %.au.list $chr(160) ò
  28.   if (%.au.cmd isin xw) {
  29.     if (%.au.act == a) {
  30.       if (%.au.chan == all) { if (%.au.q) return | _error You must give a channel to add an automatic X/W login on. }
  31.       if (%.au.parms == $null) { if (%.au.q) return | _error You must give the password to use for the automatic X/W login. }
  32.       if ((%pp.net == undernet) && ((X ison %.au.chan) || (W ison %.au.chan))) {
  33.         if ((X ison %.au.chan) && ($ial(X!cservice@undernet.org,0) == 1)) set %.au.cmd X
  34.         if ((W ison %.au.chan) && ($ial(W!cservice@undernet.org,0) == 1)) set %.au.cmd W
  35.       }
  36.       if ($_not(%.au.q)) dispa Automatic %.au.cmd login on %col.target $+ %.au.chan $+  added.
  37.       set %autoxw. [ $+ [ %.au.chan ] ] %.au.cmd $_pwenc(%.au.parms)
  38.       set %autoxw.chans $addtok(%autoxw.chans,%.au.chan,32)
  39.     }
  40.     elseif (%.au.act == p) {
  41.       if (%pp.net != undernet) { if (%.au.q) return | _error You must be connected to UnderNet before you can login to X/W! }
  42.       if (%.au.chan == all) {
  43.         set %.au.num $_numtok(32,%autoxw.chans)
  44.         if (%.au.num == 0) { if (%.au.q) return | _error No automatic X/W logins have been defined! }
  45.         if (%.au.q) disps Logging in to X/W...
  46.         set %.au.delay -5
  47.         :loop1
  48.         set %.au.chan $gettok(%autoxw.chans,%.au.num,32)
  49.         set %.au.login %autoxw. [ $+ [ %.au.chan ] ]
  50.         set %.au.xw2 $gettok(%.au.login,1,32)
  51.         set %.au.xw $_xwtarg(%.au.xw2)
  52.         if (%.au.delay > 0) .timer 1 %.au.delay _privmsg %.au.xw login %.au.chan $_pwenc($gettok(%.au.login,2-,32))
  53.         else _privmsg %.au.xw login %.au.chan $_pwenc($gettok(%.au.login,2-,32))
  54.         _timersinc 120 -recentpart. $+ %.au.chan
  55.         if ($_not(%.au.q)) dispa Performing %col.target $+ %.au.xw2 $+  login on %col.target $+ %.au.chan $+ .
  56.         inc %.au.delay 3
  57.         if ($_vd(.au.num) > 0) goto loop1
  58.       }
  59.       else {
  60.         set %.au.login %autoxw. [ $+ [ %.au.chan ] ]
  61.         if (%.au.login == $null) { if (%.au.q) return | _error No automatic X/W login defined for  $+ %.au.chan $+ ! }
  62.         set %.au.xw2 $gettok(%.au.login,1,32)
  63.         set %.au.xw $_xwtarg(%.au.xw2)
  64.         _privmsg %.au.xw login %.au.chan $_pwenc($gettok(%.au.login,2-,32))
  65.         _timersinc 120 -recentpart. $+ %.au.chan
  66.         if ($_not(%.au.q)) dispa Performing %col.target $+ %.au.xw2 $+  login on %col.target $+ %.au.chan $+ .
  67.       }
  68.     }
  69.     elseif (%.au.act == d) {
  70.       if (%.au.chan == all) {
  71.         set %.au.num $_numtok(32,%autoxw.chans)
  72.         if (%.au.num == 0) { if (%.au.q) return | _error No automatic X/W logins have been defined! }
  73.         unset %autoxw.*
  74.         if ($_not(%.au.q)) dispa All automatic X/W logins deleted.
  75.       }
  76.       else {
  77.         set %.au.login %autoxw. [ $+ [ %.au.chan ] ]
  78.         if (%.au.login == $null) { if (%.au.q) return | _error No automatic X/W login defined for  $+ %.au.chan $+ ! }
  79.         set %autoxw. [ $+ [ %.au.chan ] ]
  80.         set %autoxw.chans $remtok(%autoxw.chans,%.au.chan,32)
  81.         if ($_not(%.au.q)) dispa Automatic X/W login for %col.target $+ %.au.chan $+  deleted.
  82.       }
  83.     }
  84.     elseif (%.au.act == v) {
  85.       open @Info /auto Automatic X/W logins
  86.       dispr @Info Automatic X/W logins-
  87.       set %.au.num $_numtok(32,%autoxw.chans)
  88.       if (%.au.num == 0) dispr @Info %.au.list No automatic X/W logins have been defined.
  89.       else {
  90.         :loop2
  91.         set %.au.chan $gettok(%autoxw.chans,%.au.num,32)
  92.         set %.au.login %autoxw. [ $+ [ %.au.chan ] ]
  93.         dispr @Info %.au.list Login to %col.target $+ $gettok(%.au.login,1,32) $+  on channel %col.target $+ %.au.chan $+ .
  94.         if ($_vd(.au.num) > 0) goto loop2
  95.       }
  96.     }
  97.     elseif (%.au.act == u) { if (%.au.q) return | _error X/W logins do not have an associated userlevel. }
  98.     else { if (%.au.q) return | _error You cannot have X/W logins automatically expire. }
  99.   }
  100.   elseif (%.au.cmd == c) {
  101.     if (%.au.act == a) {
  102.       if (%.au.chan == all) { if (%.au.q) return | _error You must give a channel to add an automatic ChanServ login on. }
  103.       if (%.au.parms == $null) { if (%.au.q) return | _error You must give the password to use for the automatic ChanServ login. }
  104.       if ($_not(%.au.q)) dispa Automatic ChanServ login on %col.target $+ %.au.chan $+  added.
  105.       set %autocs. [ $+ [ %.au.chan ] ] $_pwenc(%.au.parms)
  106.       set %autocs.chans $addtok(%autocs.chans,%.au.chan,32)
  107.     }
  108.     elseif (%.au.act == p) {
  109.       if (%s^c != ChanServ) { if (%.au.q) return | _error You must be connected to DalNet before you can login to ChanServ! }
  110.       if (%.au.chan == all) {
  111.         set %.au.num $_numtok(32,%autocs.chans)
  112.         if (%.au.num == 0) { if (%.au.q) return | _error No automatic ChanServ logins have been defined! }
  113.         if (%.au.q) disps Logging in to ChanServ...
  114.         set %.au.delay -5
  115.         :loop1
  116.         set %.au.chan $gettok(%autocs.chans,%.au.num,32)
  117.         set %.au.login %autocs. [ $+ [ %.au.chan ] ]
  118.         if (%.au.delay > 0) .timer 1 %.au.delay cs identify %.au.chan $_pwenc(%.au.login)
  119.         else cs identify %.au.chan $_pwenc(%.au.login)
  120.         _timersinc 120 -recentpart. $+ %.au.chan
  121.         if ($_not(%.au.q)) dispa Performing %col.target $+ ChanServ login on %col.target $+ %.au.chan $+ .
  122.         inc %.au.delay 3
  123.         if ($_vd(.au.num) > 0) goto loop1
  124.       }
  125.       else {
  126.         set %.au.login %autocs. [ $+ [ %.au.chan ] ]
  127.         if (%.au.login == $null) { if (%.au.q) return | _error No automatic ChanServ login defined for  $+ %.au.chan $+ ! }
  128.         cs identify %.au.chan $_pwenc(%.au.login)
  129.         _timersinc 120 -recentpart. $+ %.au.chan
  130.         if ($_not(%.au.q)) dispa Performing %col.target $+ ChanServ login on %col.target $+ %.au.chan $+ .
  131.       }
  132.     }
  133.     elseif (%.au.act == d) {
  134.       if (%.au.chan == all) {
  135.         set %.au.num $_numtok(32,%autocs.chans)
  136.         if (%.au.num == 0) { if (%.au.q) return | _error No automatic ChanServ logins have been defined! }
  137.         unset %autocs.*
  138.         if ($_not(%.au.q)) dispa All automatic ChanServ logins deleted.
  139.       }
  140.       else {
  141.         set %.au.login %autocs. [ $+ [ %.au.chan ] ]
  142.         if (%.au.login == $null) { if (%.au.q) return | _error No automatic ChanServ login defined for  $+ %.au.chan $+ ! }
  143.         set %autocs. [ $+ [ %.au.chan ] ]
  144.         set %autocs.chans $remtok(%autocs.chans,%.au.chan,32)
  145.         if ($_not(%.au.q)) dispa Automatic ChanServ login for %col.target $+ %.au.chan $+  deleted.
  146.       }
  147.     }
  148.     elseif (%.au.act == v) {
  149.       open @Info /auto Automatic ChanServ logins
  150.       dispr @Info Automatic ChanServ logins-
  151.       set %.au.num $_numtok(32,%autocs.chans)
  152.       if (%.au.num == 0) dispr @Info %.au.list No automatic ChanServ logins have been defined.
  153.       else {
  154.         :loop2
  155.         dispr @Info %.au.list Login to %col.target $+ ChanServ on channel %col.target $+ $gettok(%autocs.chans,%.au.num,32) $+ .
  156.         if ($_vd(.au.num) > 0) goto loop2
  157.       }
  158.     }
  159.     elseif (%.au.act == u) { if (%.au.q) return | _error ChanServ logins do not have an associated userlevel. }
  160.     else { if (%.au.q) return | _error You cannot have ChanServ logins automatically expire. }
  161.   }
  162.   elseif (%.au.cmd == n) {
  163.     if (%.au.act == a) {
  164.       if (%.au.parms == $null) { if (%.au.q) return | _error You must give the password to use for automatic NickServ login. }
  165.       if ($_not(%.au.q)) dispa Automatic NickServ login for %col.target $+ %.au.chan $+  added.
  166.       set %autonk. [ $+ [ %.au.chan ] ] $_pwenc(%.au.parms)
  167.       set %autonk.nicks $addtok(%autonk.nicks,%.au.chan,32)
  168.     }
  169.     elseif (%.au.act == p) {
  170.       if (%s^n != NickServ) { if (%.au.q) return | _error You must be connected to DalNet before you can login to NickServ! }
  171.       set %.au.login %autonk. [ $+ [ $me ] ]
  172.       if (%.au.login == $null) { if (%.au.q) return | _error No automatic NickServ login defined for  $+ $me $+ ! }
  173.       ns identify $me $_pwenc(%.au.login)
  174.       if (%.au.q) disps Logging in to NickServ...
  175.       else dispa Performing %col.target $+ NickServ login for %col.target $+ $me $+ .
  176.       set -u30 %-recent.ns.login $true
  177.     }
  178.     elseif (%.au.act == d) {
  179.       if (%.au.chan == $null) {
  180.         set %.au.num $_numtok(32,%autonk.nicks)
  181.         if (%.au.num == 0) { if (%.au.q) return | _error No automatic NickServ logins have been defined! }
  182.         unset %autonk.*
  183.         if ($_not(%.au.q)) dispa All automatic NickServ logins deleted.
  184.       }
  185.       else {
  186.         set %.au.login %autonk. [ $+ [ %.au.chan ] ]
  187.         if (%.au.login == $null) { if (%.au.q) return | _error No automatic NickServ login defined for  $+ %.au.chan $+ ! }
  188.         set %autonk. [ $+ [ %.au.chan ] ]
  189.         set %autonk.nicks $remtok(%autonk.nicks,%.au.chan,32)
  190.         if ($_not(%.au.q)) dispa Automatic NickServ login for %col.target $+ %.au.chan $+  deleted.
  191.       }
  192.     }
  193.     elseif (%.au.act == v) {
  194.       open @Info /auto Automatic NickServ logins
  195.       dispr @Info Automatic NickServ logins-
  196.       set %.au.num $_numtok(32,%autonk.nicks)
  197.       if (%.au.num == 0) dispr @Info %.au.list No automatic NickServ logins have been defined.
  198.       else {
  199.         :loop2
  200.         dispr @Info %.au.list Login to %col.target $+ NickServ for nickname %col.target $+ $gettok(%autonk.nicks,%.au.num,32) $+ .
  201.         if ($_vd(.au.num) > 0) goto loop2
  202.       }
  203.     }
  204.     elseif (%.au.act == u) { if (%.au.q) return | _error NickServ logins do not have an associated userlevel. }
  205.     else { if (%.au.q) return | _error You cannot have NickServ logins automatically expire. }
  206.   }
  207.   else {
  208.     set %.au.var auto- $+ %.au.cmd $+ . $+ %.au.chan
  209.     if (%.au.act == a) {
  210.       if (%.au.parms == $null) { if (%.au.q) return | _error You must give a command to add as an autoevent. }
  211.       inc % [ $+ [ %.au.var ] ]
  212.       set %.au.var %.au.var $+ . $+ % [ $+ [ %.au.var ] ]
  213.       set % [ $+ [ %.au.var ] ] %.au.parms
  214.       if (%.au.chan == all) {
  215.         if ($_not(%.au.q)) dispa Autoevent %.au.when added for all channels.
  216.       }
  217.       else {
  218.         if ($_not(%.au.q)) dispa Autoevent %.au.when added on %col.target $+ %.au.chan $+ .
  219.         set %.au.var auto- $+ %.au.cmd $+ .chans
  220.         set % [ $+ [ %.au.var ] ] $addtok(% [ $+ [ %.au.var ] ] ,%.au.chan,32)
  221.       }
  222.     }
  223.     elseif (%.au.act == p) {
  224.       if (%.au.chan == all) { if (%.au.q) return | _error You must give a channel to perform autoevents for. }
  225.       if (%.au.parms == $null) { if (%.au.q) return | _error You must specify the acting nick for the autoevents. (User who opped you or joined the channel.) }
  226.       set %.au.var2 auto- $+ %.au.cmd $+ .all
  227.       set %.au.max % [ $+ [ %.au.var2 ] ]
  228.       unset %.au.num
  229.       if (%.au.max) {
  230.         set %.au.num 1
  231.         :loop3
  232.         set %.au.var3 %.au.var2 $+ . $+ %.au.num
  233.         set %.au.cmd % [ $+ [ %.au.var3 ] ]
  234.         set %.au.cmd $replace($replace($replace(%.au.cmd,&me&,$me),&nick&,%.au.parms),&chan&,%.au.chan)
  235.         %.au.cmd
  236.         if ($_vi(.au.num) <= %.au.max) goto loop3
  237.       }
  238.       set %.au.max % [ $+ [ %.au.var ] ]
  239.       if (%.au.max) {
  240.         set %.au.num 1
  241.         :loop4
  242.         set %.au.var2 %.au.var $+ . $+ %.au.num
  243.         set %.au.cmd % [ $+ [ %.au.var2 ] ]
  244.         set %.au.cmd $replace($replace($replace(%.au.cmd,&me&,$me),&nick&,%.au.parms),&chan&,%.au.chan)
  245.         %.au.cmd
  246.         if ($_vi(.au.num) <= %.au.max) goto loop4
  247.       }
  248.       if ($_not(%.au.q)) {
  249.         if (%.au.num == $null) dispa No applicable autoevents %.au.when for channel %col.target $+ %.au.chan $+ .
  250.         else dispa All autoevents %.au.when for channel %col.target $+ %.au.chan $+  performed.
  251.       }
  252.     }
  253.     elseif (%.au.act == d) {
  254.       if (%.au.chan == all) {
  255.         set %.au.var auto- $+ %.au.cmd $+ .*
  256.         [ unset % $+ [ %.au.var ] ]
  257.         if ($_not(%.au.q)) dispa All autoevents %.au.when deleted.
  258.       }
  259.       else {
  260.         set %.au.var %.au.var $+ *
  261.         [ unset % $+ [ %.au.var ] ]
  262.         set %.au.var auto- $+ %.au.cmd $+ .chans
  263.         set % [ $+ [ %.au.var ] ] $remtok(% [ $+ [ %.au.var ] ] ,%.au.chan,32)
  264.         if ($_not(%.au.q)) dispa All autoevents %.au.when deleted for channel %col.target $+ %.au.chan $+ .
  265.       }
  266.     }
  267.     elseif (%.au.act == v) {
  268.       open @Info /auto Autoevents %.au.when ( $+ %.au.chan $+ )
  269.       set %.au.var2 auto- $+ %.au.cmd $+ .all
  270.       dispr @Info These autoevents are performed for any channel: %.au.when
  271.       if (% [ $+ [ %.au.var2 ] ] < 1) dispr @Info %.au.list (no global autoevents for this)
  272.       else {
  273.         set %.au.max % [ $+ [ %.au.var2 ] ]
  274.         set %.au.num 1
  275.         :loop3
  276.         set %.au.var3 %.au.var2 $+ . $+ %.au.num
  277.         dispr @Info %.au.list % [ $+ [ %.au.var3 ] ]
  278.         if ($_vi(.au.num) <= %.au.max) goto loop3
  279.       }
  280.       if (%.au.chan == all) {
  281.         set %.au.var3 auto- $+ %.au.cmd $+ .chans
  282.         set %.au.chans % [ $+ [ %.au.var3 ] ]
  283.         set %.au.numc $_numtok(32,%.au.chans)
  284.         if (%.au.numc > 0) {
  285.           :loop5
  286.           set %.au.chan $gettok(%.au.chans,%.au.numc,32)
  287.           set %.au.var auto- $+ %.au.cmd $+ . $+ %.au.chan
  288.           dispr @Info If done on %col.target $+ %.au.chan $+ , then these autoevents are also run: %.au.when
  289.           set %.au.max % [ $+ [ %.au.var ] ]
  290.           set %.au.num 1
  291.           :loop6
  292.           set %.au.var2 %.au.var $+ . $+ %.au.num
  293.           dispr @Info %.au.list % [ $+ [ %.au.var2 ] ]
  294.           if ($_vi(.au.num) <= %.au.max) goto loop6
  295.           if ($_vd(.au.numc) > 0) goto loop5
  296.         }
  297.         else dispr @Info %.au.list (no autoevents defined for any specific channels)
  298.       }
  299.       else {
  300.         dispr @Info Then, these autoevents are performed specifically for %col.target $+ %.au.chan $+ : %.au.when
  301.         if (% [ $+ [ %.au.var ] ] < 1) dispr @Info %.au.list (no autoevents defined for this)
  302.         else {
  303.           set %.au.max % [ $+ [ %.au.var ] ]
  304.           set %.au.num 1
  305.           :loop4
  306.           set %.au.var2 %.au.var $+ . $+ %.au.num
  307.           dispr @Info %.au.list % [ $+ [ %.au.var2 ] ]
  308.           if ($_vi(.au.num) <= %.au.max) goto loop4
  309.         }
  310.       }
  311.     }
  312.     elseif (%.au.act == e) {
  313.       unset %.au.exp
  314.       if (%.au.parms == 0) unset %.au.parms
  315.       if (%.au.parms == $null) set %.au.exp never
  316.       if (%.au.parms == 1) set %.au.exp when you exit mIRC.
  317.       if (%.au.parms == 2) set %.au.exp when you disconnect.
  318.       if (%.au.parms == 3) set %.au.exp when you part the channel.
  319.       if (%.au.exp == $null) { if (%.au.q) return | _error You must give an expiration level. (0, 1, 2, or 3.) }
  320.       if (%.au.chan == all) {
  321.         set %.au.var auto- $+ %.au.cmd $+ .exp
  322.         if ($_not(%.au.q)) {
  323.           if (%.au.exp == never) dispa Autoevents %.au.when will not automatically expire. (unless the autoevents for a specific channel have their own expire setting.)
  324.           else dispa All autoevents %.au.when will automatically expire %.au.exp (including channel-specific autoevents)
  325.         }
  326.       }
  327.       else {
  328.         set %.au.var %.au.var $+ .exp
  329.         if ($_not(%.au.q)) {
  330.           if (%.au.exp == never) dispa Autoevents %.au.when will not automatically expire for %col.target $+ %.au.chan $+  (global autoevents of this type may have their own expire setting.)
  331.           else dispa All autoevents for %col.target $+ %.au.chan $+  %.au.when will automatically expire %.au.exp (global autoevents of this type unaffected.)
  332.         }
  333.       }
  334.       set % [ $+ [ %.au.var ] ] %.au.parms
  335.     }
  336.     else {
  337.       if (%.au.cmd != j) { if (%.au.q) return | _error Only on-join autoevents can have an associated userlevel. }
  338.       set %.au.dec %.au.parms
  339.       if (%.au.parms == $null) {
  340.         if (%.au.chan == all) set %.au.dec %autoj.ulevel
  341.         else set %.au.dec $_setting(autoj.ulevel,%.au.chan)
  342.       }
  343.       unset %.au.how
  344.       if (< isin %.au.dec) set %.au.how less than
  345.       elseif (> isin %.au.dec) set %.au.how greater than
  346.       if (= isin %.au.dec) { if (%.au.how == $null) set %.au.how equal to | else set %.au.how %.au.how or equal to }
  347.       if (%.au.how == $null) { set %.au.how greater than or equal to | set %.au.dec <= $+ %.au.dec }
  348.       set %.au.num $remove($remove($remove($remove($_s2p(%.au.dec),<),>),=),)
  349.       if (%.au.num !isnum) { if (%.au.q) return | _error Illegal level specified- Use a number optionally preceded with >, >=, <, <=, or =. }
  350.       if (%.au.parms == $null) {
  351.         if (%.au.chan == all) dispa Autoevents (activated when others join) will only activate on users with a level  $+ %.au.how $+  %col.info1 $+ %.au.num $+ . (unless a channel's specific autoevents override this setting.)
  352.         else dispa Autoevents (activated when others join) for %col.target $+ %.au.chan $+  will only activate on users with a level  $+ %.au.how $+  %col.info1 $+ %.au.num $+ .
  353.       }
  354.       else {
  355.         if (%.au.chan == all) {
  356.           dispa Autoevents (activated when others join) will now only activate on users with a level  $+ %.au.how $+  %col.info1 $+ %.au.num $+ . (unless a channel's specific autoevents override this setting.)
  357.           set %autoj.ulevel %.au.dec
  358.         }
  359.         else {
  360.           if (%.au.num == 0) {
  361.             dispa Autoevents (activated when others join) for %col.target $+ %.au.chan $+  will now use the default userlevel setting for all on-join autoevents. (type /auto ju to see this setting)
  362.             set %autoj.ulevel. [ $+ [ %.au.chan ] ]
  363.           }
  364.           else {
  365.             dispa Autoevents (activated when others join) for %col.target $+ %.au.chan $+  will now only activate on users with a level  $+ %.au.how $+  %col.info1 $+ %.au.num $+ .
  366.             set %autoj.ulevel. [ $+ [ %.au.chan ] ] %.au.dec
  367.           }
  368.         }
  369.       }
  370.     }
  371.   }
  372. }
  373. _allauto {
  374.   auto f $+ $1 $2-
  375.   auto o $+ $1 $2-
  376.   auto j $+ $1 $2-
  377. }
  378. ; -----------------------------------------------------
  379. ; Clone control
  380. ; -----------------------------------------------------
  381. clones {
  382.   if ($_ischan($1)) {
  383.     if ($chan($1) != $1) _error You must be on the specified channel in order to use this command.
  384.     if ($1 isin %-ial.update) _error The IAL update is not completed yet on  $+ $1 $+ , please wait a few seconds and try again.
  385.     if ((%.+sc.kick) && ($me !isop $1)) _error You must have ops in order to clear out clones.
  386.     set %.sc.chan $1 | set %.sc.nick $2
  387.   }
  388.   else {
  389.     if (%-ial.update != $null) _error The IAL is not completely updated, please wait a few seconds and try again.
  390.     unset %.sc.chan | set %.sc.nick $1
  391.   }
  392.   if ($_ismask(%.sc.nick)) {
  393.     _dynpop.rot scan 6 %.sc.nick
  394.     if (%.sc.chan == $null) {
  395.       set %.sc.num $ial(%.sc.nick,0)
  396.       if (%.sc.num == 0) disp No users matching %col.target $+ %.sc.nick $+  found. (on any channels)
  397.       else {
  398.         set %.sc.found $_getnicks(*,%.sc.nick)
  399.         disp-div
  400.         disp %col.dark $+ $_numtok(32,%.sc.found) $+  users matching %col.target $+ %.sc.nick $+ : (on all channels)
  401.         disp %col.dark $+ %.sc.found
  402.         disp-div
  403.       }
  404.     }
  405.     else {
  406.       set %.sc.found $_getnicks(%.sc.chan,%.sc.nick)
  407.       if (%.sc.found == $null) dispr %.sc.chan No users matching %col.target $+ %.sc.nick $+  found on %col.info1 $+ %.sc.chan $+ .
  408.       else {
  409.         dispr-div %.sc.chan
  410.         dispr %.sc.chan [[ $+ %col.info1 $+ %.sc.chan $+ ] Users matching %col.target $+ %.sc.nick $+ :
  411.         dispr %.sc.chan [[ $+ %col.info1 $+ %.sc.chan $+ ] %col.dark $+ %.sc.found
  412.         dispr-div %.sc.chan
  413.       }
  414.     }
  415.     return
  416.   }
  417.   if (%.sc.nick == $null) unset %.sc.add
  418.   else {
  419.     set %.sc.nick $_nickglob(%.sc.nick)
  420.     if ($address(%.sc.nick,5) == $null) _error %.sc.nick is not a known user!
  421.     if ((%.sc.chan != $null) && (%.sc.nick !ison %.sc.chan)) _error %.sc.nick is not on channel %.sc.chan $+ !
  422.     set %.sc.add (from %col.target $+ %.sc.nick $+ )
  423.   }
  424.   set %.+sc.find $false
  425.   if (%.sc.chan == $null) { disp-div | disp Scanning all channels for clones: %.sc.add }
  426.   else {
  427.     if ($_not(%.+sc.quiet)) dispr-div %.sc.chan
  428.     if ($_not(%.+sc.quiet)) dispr %.sc.chan [[ $+ %col.info1 $+ %.sc.chan $+ ] Scanning %col.target $+ %.sc.chan $+  for clones: %.sc.add
  429.   }
  430.   set %.sc.donum 1
  431.   :loop2
  432.   if (%.sc.nick == $null) {
  433.     if (%.sc.chan == $null) set %.sc.todo $ial(*,%.sc.donum).nick
  434.     else set %.sc.todo $nick(%.sc.chan,%.sc.donum)
  435.     if (%.sc.todo == $null) goto done
  436.   }
  437.   else set %.sc.todo %.sc.nick
  438.   if (((%.sc.todo == X) || (%.sc.todo == W)) && (%pp.net == undernet)) goto next
  439.   if (%+clonescan.identd) set %.sc.addr $address(%.sc.todo,1)
  440.   else set %.sc.addr $address(%.sc.todo,2)
  441.   if (%.sc.chan == $null) {
  442.     set %.sc.num $ial(%.sc.addr,0)
  443.     if (%.sc.num > 1) {
  444.       if ((%+clonescan.identd == $false) && ($ial($address(%.sc.todo,1),0) == %.sc.num)) set %.sc.addr $address(%.sc.todo,1)
  445.       if ((%.sc.nick == $null) && ($ial(%.sc.addr,1).nick != %.sc.todo)) goto next
  446.       set %.sc.found $_getnicks(*,%.sc.addr)
  447.       disp %col.att $+ %.sc.num $+  clones from %col.target $+ %.sc.addr $+ : %col.dark $+ %.sc.found
  448.       set %.+sc.find $true
  449.     }
  450.   }
  451.   else {
  452.     set %.sc.num $ialchan(%.sc.addr,%.sc.chan,0)
  453.     if (%.sc.num > 1) {
  454.       if ((%+clonescan.identd == $false) && ($ialchan($address(%.sc.todo,1),%.sc.chan,0) == %.sc.num)) set %.sc.addr $address(%.sc.todo,1)
  455.       if ((%.sc.nick == $null) && ($ialchan(%.sc.addr,%.sc.chan,1).nick != %.sc.todo)) goto next
  456.       set %.sc.found $_getnicks(%.sc.chan,%.sc.addr)
  457.       dispr %.sc.chan [[ $+ %col.info1 $+ %.sc.chan $+ ] %col.att $+ %.sc.num $+  clones from %col.target $+ %.sc.addr $+ : %col.dark $+ %.sc.found
  458.       set %.+sc.find $true
  459.       if ((%.+sc.kick) && ($me isop %.sc.chan)) {
  460.         if (%.+sc.ban) ban %.sc.chan %.sc.addr
  461.         set %.sc.tokick $_numtok(32,%.sc.found)
  462.         :kloop1
  463.         inc %.sc.cleared
  464.         set %.sc.knick $gettok(%.sc.found,%.sc.tokick,32)
  465.         kick %.sc.chan %.sc.knick $_finalmsg($replace($replace($replace($replace($replace($_getmsg(Kicks,CloneClear),&chan&,%.sc.chan),&nick&,%.sc.knick),&total&,%.sc.cleared),&addr&,%.sc.addr),&num&,%.sc.num))
  466.         if ($_vd(.sc.tokick) > 0) goto kloop1
  467.       }
  468.     }
  469.   }
  470.   :next
  471.   if (%.sc.nick == $null) { inc %.sc.donum | goto loop2 }
  472.   :done
  473.   if (%.sc.chan == $null) { if ($_not(%.+sc.find)) disp No clones detected. | disp-div }
  474.   else {
  475.     if ($_not(%.+sc.find)) {
  476.       if (%.+sc.quiet) return
  477.       dispr %.sc.chan [[ $+ %col.info1 $+ %.sc.chan $+ ] No clones detected.
  478.     }
  479.     elseif (%.+sc.kick) dispr %.sc.chan [[ $+ %col.info1 $+ %.sc.chan $+ ] %col.target $+ %.sc.cleared $+  clones detected and cleared.
  480.     dispr-div %.sc.chan
  481.   }
  482. }
  483. clone clones $1-
  484. clrclones {
  485.   set %.+sc.kick $true
  486.   unset %.sc.cleared
  487.   if ($_ischan($1)) { if (b isin $2) set %.+sc.ban $true | clones $1 }
  488.   else {
  489.     if (b isin $1) set %.+sc.ban $true
  490.     if ($_ischan($2)) clones $2
  491.     elseif ($chan($active) == $active) clones $active
  492.     else _error You must use this in a channel or specify a target channel.
  493.   }
  494.   unset %.+sc.kick %.+sc.ban
  495. }
  496. clrclone clrclones $1-
  497. ; ---
  498. _clock {
  499.   if (%pp.clock == 0) { .timer916 off | return }
  500.   set %.hour $gettok($remove($timestamp,[),1,58)
  501.   set %.min $gettok($remove($timestamp,]),2,58)
  502.   set %.min $calc(%.min - (%.min % %pp.clock) + %pp.clock)
  503.   if (%.min > 59) { set %.min 0 | inc %.hour }
  504.   if (%.hour > 23) set %.hour 0
  505.   .timer916 -o %.hour $+ : $+ %.min 1 1 _clock2
  506. }
  507. _clock2 {
  508.   if (%pp.clock.beep) beep 1 1
  509.   set %.time $remove($remove($timestamp,]),[) $+ 
  510.   if ($gettok(%.time,1,58) == 0) set %.time %.time (Midnight)
  511.   elseif ($gettok(%.time,1,58) < 12) set %.time %.time (AM)
  512.   elseif ($gettok(%.time,1,58) == 12) set %.time %.time (Noon)
  513.   else set %.time %.time ( $+ $calc($gettok(%.time,1,58) - 12) PM)
  514.   if (%pp.clock.active) dispa The time is now  $+ %.time
  515.   else disps The time is now  $+ %.time
  516.   _clock
  517. }
  518.